package com.yike.common.Response;

import lombok.Data;

import java.io.Serializable;

@Data
public class LklPayResponse  implements Serializable {

    private static final long serialVersionUID = -7506088761851569011L;
    // 交易相关字段
    public String needQuery;          // 是否需要发起查询 M String(32) 0=不需要,1=订单处理中商户需主动发起查询
    public String merchantNo;         // 商户号 M String(32) 拉卡拉分配的商户号
    public String outTradeNo;         // 商户交易流水号 M String(32) 请求报文中的商户交易流水号
    public String tradeNo;            // 拉卡拉交易流水号 M String(32) 拉卡拉交易流水号
    public String logNo;              // 拉卡拉对账单流水号 M String(14) 拉卡拉对账单流水号
    public String accTradeNo;         // 账户端交易订单号 C String(32) 账户端交易流水号

    // 账户类型相关
    public String accountType;        // 钱包类型 M String(16) 微信:WECHAT 支付宝:ALIPAY 银联:UQRCODEPAY 觅支付:BESTPAY 数字货币:DCPAY

    // 金额相关字段
    public String totalAmount;        // 订单金额 M String(12) 单位分，订单金额=付款人实际发生金额+账户端优惠金额
    public String payerAmount;        // 付款人实际发生金额 M String(12) 单位分
    public String accSettled;         // 账户端应结订单金额 M String(12) 应结订单金额=付款人实际发生金额+账户端优惠金额
    public String accMerchantDiscount; // 商户优惠金额(账户端) C String(12) 账户端返回商户优惠金额，单位分
    public String accClientDiscount;  // 账户端优惠金额 C String(12) 账户端返回账户端优惠金额，单位分
    public String accOtherDiscount;  // 账户端其它优惠金额 C String(12) 账户端返回其它优惠金额，单位分

    // 交易信息
    public String tradeTime;          // 交易完成时间 M String(14) 以账户端返回时间为准
    public String bankType;           // 付款银行 C String(128) 付款银行
    public String cardType;           // 卡类型 C String(32) 卡类型

    /**
     * 是否需要查询的枚举
     */
    public enum NeedQuery {
        NOT_NEED("0", "不需要查询"),
        NEED_QUERY("1", "需要查询");

        private String code;
        private String desc;

        NeedQuery(String code, String desc) {
            this.code = code;
            this.desc = desc;
        }

        public String getCode() {
            return code;
        }

        public String getDesc() {
            return desc;
        }
    }

    /**
     * 账户类型枚举
     */
    public enum AccountType {
        WECHAT("WECHAT", "微信"),
        ALIPAY("ALIPAY", "支付宝"),
        UQRCODEPAY("UQRCODEPAY", "银联"),
        BESTPAY("BESTPAY", "觅支付"),
        DCPAY("DCPAY", "数字货币");

        private String code;
        private String desc;

        AccountType(String code, String desc) {
            this.code = code;
            this.desc = desc;
        }

        public String getCode() {
            return code;
        }

        public String getDesc() {
            return desc;
        }
    }
}
